﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace H2
{
    class Program
    {
        static void Main(string[] args)
        {
            //a();
            //b();
            //c();
            //d();
            //e();
            //f();
            //g();
            //h();
            //i();
            //j();
            k();
            Console.ReadKey();
        }
        public static void a()
        {
            //输入一行字符串，分别统计出其中英文字母、数字、空格的个数。
            Console.WriteLine("请输入一行字符串");
            String str = Console.ReadLine();
            int A = 0;
            int B = 0;
            int C = 0;
            foreach (var D in str)
            {
                if (char.IsLetter(D))
                {
                    A++;
                }
                else if (char.IsDigit(D))
                {
                    B++;
                }
                else if (char.IsSeparator(D))
                {
                    C++;
                }
            }
            Console.WriteLine("英文字母的个数为{0}，数字的个数为{1}，空格的个数为{2}", A, B, C);
        }
        public static void b()
        {
            //在 Main 方法中创建一个 double 类型的数组，
            //并在该数组中存入 5 名学生的考试成绩(控制台输入)，计算总成绩和平均成绩。
            //要求使用foreach语句实现该功能，
            double[] score = new double[5];

            for (int i = 0; i < score.Length; i++)
            {
                Console.WriteLine("请输入第{0}名学生的成绩", i + 1);
                score[i] = double.Parse(Console.ReadLine());
            }
            double sum = 0;
            foreach (var num in score)
            {
                sum += num;

            }
            int avg = (int)(sum / score.Length);
            Console.WriteLine("总成绩为{0}平均成绩为{1}", sum, avg);
        }
        public static void c()
        {
            //定义一个方法，实现一维数组的排序功能，从大到小排序。(不要用Array类的方法)
            int[] arr = { 89, 38, 67, 1, 11 };
            for (int i = 0; i < arr.Length - 1; i++)
            {
                for (int j = 0; j < arr.Length - i - 1; j++)
                {
                    if (arr[j] < arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }

            }
            for (int z = 0; z < arr.Length; z++)
            {
                Console.Write(arr[z] + " ");
            }
        }
        public static void d()
        {
            //实现查找数组元素索引的功能。
            //定义一个数组，然后控制台输入要查找的元素，
            //返回输入值在数组中最后一次出现的位置。若是找不到，请打印找不到。(不要用Array类的方法)
            int[] arr = { 89, 36, 56, 75, 36 };
            Console.WriteLine("请输入要查找的元素");
            int num = int.Parse(Console.ReadLine());
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] == num)
                {
                    Console.WriteLine("你查找的元素为" + num + "索引为" + i + "是数组中的第" + (i + 1) + "个数");
                    return;
                }


            }
            Console.WriteLine("找不到");

        }
        public static void e()
        {
            //打印九九乘法表
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(i + "*" + j + "=" + i * j + "\t");
                }
                Console.WriteLine();
            }
        }
        public static void f()
        {
            /*
             用户输入正方形边长，用*打印出空心正方形。

                如：用户输入5，则输出如下图形。
                *****
                *    *
                *    *
                *    *
                *****
             */
            Console.WriteLine("请输入正方形边长：");
            int a = int.Parse(Console.ReadLine());
            for (int i = 0; i < a; i++)
            {
                for (int j = 0; j < a; j++)
                {
                    if (i == 0 || i == a - 1 || j == 0 || j == a - 1)
                    {
                        Console.Write("* ");
                    }
                    else
                    {
                        Console.Write("  ");
                    }
                }
                Console.WriteLine();
            }
        }
        public static void g()
        {
            /*
                 *
                ***
               *****
                ***
                 *

            边长是3
            行列数就是5

            */
            for (int i = 1; i < 4; i++)
            {
                for (int j = 0; j < 5 - i; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 1; k < 2 * i; k++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            for (int i = 1; i < 4; i++)
            {
                for (int j = 5; j > 3 - i; j--)
                {
                    Console.Write(" ");
                }
                for (int k = 5; k > 2 * i; k--)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
        public static void h()
        {
            /*用户输入正方形边长，用* 打印出实心正方形。

                如：用户输入5，则输出如下图形。
                *****
                *****
                *****
                *****
                *****          */
            Console.WriteLine("请输入正方形边长：");
            int s = int.Parse(Console.ReadLine());
            for (int i = 0; i < s; i++)
            {
                for (int j = 0; j < s; j++)
                {
                    Console.Write("* ");
                }
                Console.WriteLine(" ");
            }
        }
        public static void i()
        {
            /*打印杨辉三角形（要求打印10行），如下所示：（使用二维数组）
1
1    1
1    2    1
1    3    3   1
1    4    6   4    1
1    5    10  10   5   1
                */
            Console.WriteLine("能力不太行，很抱歉，不会做哎");
        }
        public static void j()
        {
            /*
             在 Main 方法中创建一个字符串类型的数组，并存入 5 个值，然后将数组中下标是偶数的元素输出。
             */
            String[] str = { "abc", "def", "dfdfs", "dfsg", "gdsf" };
            for (int i = 0; i < str.Length; i += 2)
            {
                Console.WriteLine("数组中下标是偶数的元素为" + str[i]);
            }
        }
        public static void k()
        {
            //如果一个数组保存元素是有序的（从大到小），向这个数组中插入一个数，使得插入后的数组元素仍然保持有序。
            int[] arr = new int[5];
            arr[0] = 100; arr[1] = 80; arr[2] = 60; arr[3] = 40;
            Console.WriteLine("插入前：");
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] != 0)
                {
                    Console.Write(arr[i] + "  ");
                }
            }
            Console.WriteLine();
            Console.WriteLine("请输入一个数");
            arr[4] = int.Parse(Console.ReadLine());
            int a = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr.Length - 1 - i; j++)
                {
                    if (arr[j] < arr[j + 1])
                    {
                        a = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = a;
                    }
                }
            }
            Console.WriteLine("输入后排序为：");
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write(arr[i] + "  ");
            }
        }
    }
}
